package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * 向文件中写入文本数据
 */
public class WriteStringDemo {
    public static void main(String[] args) throws IOException {
        //向文件fos.txt中写入文本内容
        FileOutputStream fos = new FileOutputStream("fos.txt",true);
        String line = "让我掉下眼泪的，不止昨夜的酒。";
        /*
            FileOutStream(String filename)
            FileOutStream(File file)
            以上两种构造器创建文件流时，如果指定的文件已经存在了，会将该文件内容清除。
            之后通过当前流写出的所有内容会被重写写入到文件中。
            追加参数append
         */
        /*
              文字与2进制的对应关系:字符集
              支持中文的字符集常见的有:
              UTF-8:unicode的转换编码
                    英文字符，符号，数字各1字节
                    中文字符占3字节
              GBK:国标编码
                  英文，数字，符号各占1字节
                  中文两字节
              互联网中通常使用的字符集为UTF-8
              String提供了将字符串按照指定字符集转换为一组字节的办法:
              byte[]  getBytes(Charset cs)
         */
        //将line的内容按照UTF-8编码转换为一组字节
        byte[] data = line.getBytes(StandardCharsets.UTF_8);
        fos.write(data);
        line = "让我依依不舍的，不止你的温柔。";
        data = line.getBytes(StandardCharsets.UTF_8);
        fos.write(data);
        fos.write("成都，带不走的只有你。".getBytes(StandardCharsets.UTF_8));
        System.out.println("执行完毕!");
        fos.close();
    }
}
